package algorithm.linear;

/**
 * 测试素数
 */
public class TestIsPrime {
    public static void main(String[] args) {
        int k = 16;
        System.out.println(testIsPrime2(k));
        System.out.println(testIsPrime3(k));
        System.out.println("--------------------------------------------");
        if (k == 1) {
            System.out.println("false");
        } else if (k == 2){
            System.out.println("true 1");
        } else if ( k< 2|| k>2 && k%2==0) {
            System.out.println("false");
        } else {
            //返回k的平方根
            int j = (int) Math.sqrt(k);
            System.out.println("sqrt> "+j +" mod>"+j%2);
            if (j % 2 == 0)
                j--;//获取测试范围最大的奇数
            while (j > 2 && k % j != 0)
                j -= 2;
            System.out.println(j<2);
        }
    }
    //是否是素数
    public static boolean testIsPrime2(int n){
        if (n <= 3) {
            return n > 1;
        }

        for(int i=2;i<n;i++){
            if(n%i == 0)
                return false;
        }
        return true;
    }
    //是否是素数
    public static boolean testIsPrime3(int n){
        if (n <= 3) {
            return n > 1;
        }
        for(int i=2;i<=Math.sqrt(n);i++){
            if(n%i == 0)
                return false;
        }
        return true;
    }
}
